/**
 * never 表示永远不会发生值的类型，比如一个函数：
 *  如果一个函数中是一个死循环或者抛出一个异常，那么这个函数会返回东西吗？
 *  不会，那么写void类型或者其他类型作为返回值类型都不合适，我们就可以使用never类型
 */

// 表示函数永远都不会有返回值
function foo(): never {
    while (true) {

    }
}


function bar(): never {
    throw new Error()
}

// never到底应用在什么场景？
// never 可以在写代码的时候提示没有被处理的类型 如果传入除了string 、number 、never的类型，则会走 const check: never = message 此时会报错，这样的话可以用来提示代码错误
// function handleMessage(message: string | number | boolean) {
function handleMessage(message: string | number) {
    switch (typeof message) {
        case 'string':
            console.log('string 处理方式处理message')
            break;
        case 'number':
            console.log('number 处理方式处理message')
            break;
        default:
            const check: never = message // 不能将类型“boolean”分配给类型“never”。
            break;
    }
}


handleMessage(1)
handleMessage('name')
// handleMessage(true)
export { }